UDP Server এবং Client এর উদাহরণ

Computer Programming - ইউনিক্স সকেট (Unix Socket) UDP Socket Programming (UDP Socket Programming) |
234
234

UDP Server এবং Client প্রোগ্রামের মাধ্যমে আমরা দেখবো কীভাবে UDP ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা পাঠানো যায়। UDP একটি কানেকশনলেস প্রোটোকল হওয়ায় এটি দ্রুত ডেটা ট্রান্সমিশনের জন্য ব্যবহৃত হয়। নিচে UDP Server এবং Client-এর উদাহরণ C ভাষায় দেওয়া হলো।

UDP Server প্রোগ্রাম উদাহরণ (C ভাষায়)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>

#define PORT 8080

int main() {
    int sockfd;
    char buffer[1024];
    struct sockaddr_in server_addr, client_addr;
    socklen_t addr_len = sizeof(client_addr);
    char *message = "Hello from server";

    // 1. Socket তৈরি করা
    if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
        perror("Socket creation failed");
        exit(EXIT_FAILURE);
    }

    // 2. সার্ভার ঠিকানা সেটআপ করা
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = INADDR_ANY;
    server_addr.sin_port = htons(PORT);

    // 3. Binding করা
    if (bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
        perror("Bind failed");
        close(sockfd);
        exit(EXIT_FAILURE);
    }

    printf("Server is listening on port %d\n", PORT);

    // 4. ডেটা গ্রহণ করা
    int n = recvfrom(sockfd, buffer, 1024, 0, (struct sockaddr*)&client_addr, &addr_len);
    buffer[n] = '\0';
    printf("Client: %s\n", buffer);

    // 5. ডেটা পাঠানো
    sendto(sockfd, message, strlen(message), 0, (struct sockaddr*)&client_addr, addr_len);
    printf("Hello message sent to client\n");

    // 6. Socket বন্ধ করা
    close(sockfd);

    return 0;
}

UDP Client প্রোগ্রাম উদাহরণ (C ভাষায়)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>

#define PORT 8080

int main() {
    int sockfd;
    char buffer[1024];
    struct sockaddr_in serv_addr;
    socklen_t addr_len = sizeof(serv_addr);
    char *message = "Hello from client";

    // 1. Socket তৈরি করা
    if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
        perror("Socket creation failed");
        exit(EXIT_FAILURE);
    }

    // 2. সার্ভার ঠিকানা সেটআপ করা
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(PORT);
    serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");

    // 3. ডেটা পাঠানো
    sendto(sockfd, message, strlen(message), 0, (struct sockaddr*)&serv_addr, addr_len);
    printf("Message sent to server\n");

    // 4. ডেটা গ্রহণ করা
    int n = recvfrom(sockfd, buffer, 1024, 0, (struct sockaddr*)&serv_addr, &addr_len);
    buffer[n] = '\0';
    printf("Server: %s\n", buffer);

    // 5. Socket বন্ধ করা
    close(sockfd);

    return 0;
}

প্রোগ্রামের বিশ্লেষণ

UDP Server প্রোগ্রাম:

  1. Socket তৈরি:
    • socket() ফাংশন ব্যবহার করে সার্ভারের জন্য একটি UDP Socket তৈরি করা হয়।
  2. Binding করা:
    • bind() ফাংশন ব্যবহার করে Socket-কে নির্দিষ্ট IP Address এবং পোর্টে সংযুক্ত করা হয় (INADDR_ANY এবং 8080)।
  3. ডেটা গ্রহণ:
    • recvfrom() ফাংশন ইনকামিং ডেটা গ্রহণ করে এবং তা buffer এ সংরক্ষণ করে। এটি ক্লায়েন্টের ঠিকানা এবং পোর্ট নম্বরও ধারণ করে।
  4. ডেটা পাঠানো:
    • sendto() ফাংশন ব্যবহার করে ক্লায়েন্টের কাছে একটি বার্তা পাঠানো হয়।
  5. Socket বন্ধ:
    • close() ফাংশন Socket বন্ধ করতে ব্যবহার করা হয়।

UDP Client প্রোগ্রাম:

  1. Socket তৈরি:
    • socket() ফাংশন ব্যবহার করে ক্লায়েন্টের জন্য একটি UDP Socket তৈরি করা হয়।
  2. সার্ভারের ঠিকানা সেটআপ করা:
    • inet_addr() ফাংশন ব্যবহার করে সার্ভারের IP Address এবং htons() ফাংশন ব্যবহার করে পোর্ট নম্বর সেট করা হয়।
  3. ডেটা পাঠানো:
    • sendto() ফাংশন ব্যবহার করে সার্ভারে বার্তা পাঠানো হয়।
  4. ডেটা গ্রহণ:
    • recvfrom() ফাংশন ব্যবহার করে সার্ভার থেকে ডেটা প্যাকেট গ্রহণ করা হয় এবং তা buffer এ সংরক্ষণ করা হয়।
  5. Socket বন্ধ:
    • close() ফাংশন Socket বন্ধ করতে ব্যবহার করা হয়।

কিভাবে এই প্রোগ্রামগুলো চালাবেন

প্রথমে সার্ভার প্রোগ্রাম চালু করুন:

  • সার্ভার একটি নির্দিষ্ট পোর্টে (এখানে 8080) ইনকামিং সংযোগের জন্য অপেক্ষা করবে।

এরপর ক্লায়েন্ট প্রোগ্রাম চালু করুন:

  • ক্লায়েন্ট প্রোগ্রাম সার্ভারের সাথে সংযোগ না করেই UDP-এর মাধ্যমে সরাসরি ডেটা পাঠাবে এবং সার্ভারের উত্তর গ্রহণ করবে।

ক্লায়েন্ট এবং সার্ভারের মধ্যে বার্তা আদান-প্রদান:

  • ক্লায়েন্ট একটি বার্তা পাঠাবে এবং সার্ভার সেই বার্তা গ্রহণ করে, পরে সার্ভার একটি উত্তর পাঠাবে যা ক্লায়েন্ট গ্রহণ করবে।

UDP Socket Programming এর সুবিধা এবং সীমাবদ্ধতা

সুবিধা:

  • দ্রুততা: UDP কানেকশন স্থাপনের প্রয়োজন না হওয়ায় এটি দ্রুত ডেটা পাঠাতে সক্ষম।
  • কম ওভারহেড: UDP-তে TCP-এর মতো হেডার এবং কানেকশন ব্যবস্থাপনার জন্য বাড়তি ওভারহেড নেই।
  • রিয়েল-টাইম অ্যাপ্লিকেশন: UDP ভিডিও স্ট্রিমিং, VoIP, এবং গেমিংয়ের মতো রিয়েল-টাইম অ্যাপ্লিকেশনের জন্য উপযুক্ত।

সীমাবদ্ধতা:

  • নির্ভরযোগ্যতা নেই: UDP ডেটা ট্রান্সমিশনের সময় প্যাকেট হারালে তা পুনরায় পাঠানো হয় না।
  • অর্ডার মেইনটেন করা হয় না: UDP প্যাকেটগুলিকে সঠিক ক্রমে পৌঁছানোর নিশ্চয়তা দেয় না।
  • নিরাপত্তা ঝুঁকি: UDP-এর স্টেটলেস হওয়ার কারণে এটি সহজে DOS (Denial of Service) এবং অন্যান্য নেটওয়ার্ক আক্রমণের শিকার হতে পারে।
common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion